<?php
namespace Swiftx\Interfaces\Orm;

interface Pager {

    /**
     * 设置当前页面
     * @param int $value
     */
    public function setCurrent(int $value);

    /**
     * 每页显示记录数
     * @param int $value
     */
    public function setNumber(int $value);

    /**
     * 每页显示记录数
     * @return int
     */
    public function getNumber():int;

    /**
     * 设置计数器
     * @param callable $func
     */
    public function setCounter(callable $func);

    /**
     * 设置加载器
     * @param callable $func
     */
    public function setLoader(callable $func);

    /**
     * 是否进行了数据同步
     * @return bool
     */
    public function isSync():bool ;

    /**
     * 执行数据加载同步
     */
    public function runSync();

    /**
     * 获取总记录数
     * @return int
     */
    public function getTotal():int;

    /**
     * 获取总页数
     * @return int
     */
    public function getCount():int;

    /**
     * 读取页面数据
     * @return Entity[]
     */
    public function getData():array ;

}